package dome1;
/*
    接口：
        1.接口使用interface关键字修饰
        2.接口不能实例化
        3.接口当中的成员变量必须赋初始值，并且默认都是public static final修饰的
        4.接口当中的方法默认都是public abstract修饰的，
        5.接口当中不能有具体的实现,如果要实现这个方法，从JDK8开始 要用default修饰这个方法
        6.接口不能有构造方法
        7.接口需要被类实现，使用implements关键字
        8.接口当中可有有static修饰的方法！

 */

interface IShape {

    String name = "1";       //默认是public static final修饰的
    public static final int age = 10;

    public abstract void draw();//默认是public abstract修饰的

//    int function();         //默认是public abstract修饰的

//    default public void flag() {        //如果要实现这个方法，从JDK8开始 要用default修饰这个方法
//        System.out.println("fadsfad");
//    }

    public static void staticFunc() {
        System.out.println("接口中的静态方法staticFunc()");
    }

}

class Rect implements IShape {

    @Override
    public void draw() {
        System.out.println("矩形！");
    }
}

class Flower implements IShape {

    @Override
    public void draw() {
        System.out.println("❀!");
    }
}




public class Test {

    public static void drowMap(IShape iShape) {
        iShape.draw();
    }

    public static void main(String[] args) {
//        IShape iShape = new IShape()

//      Rect rect = new Rect();
//      drowMap(rect);    //向上转型

        IShape iShape1 = new Rect();//向上转型
        IShape iShape2 = new Flower();//向上转型
        drowMap(iShape1);
        drowMap(iShape2);

        IShape.staticFunc();//接口中的静态方法

    }

}
